package config

import (
	"log"

	"github.com/spf13/viper"
)

type DbConfig struct {
	Username string
	Pwd      string
	Host     string
	Port     int
	Dbname   string
}

type SysConfig struct {
	LiveFS bool
	Dev    bool
}

var dbcfg DbConfig
var syscfg SysConfig

func DbCfg() DbConfig {
	return dbcfg
}

func SysCfg() SysConfig {
	return syscfg
}

func Configure(configPath string) {
	v := viper.New()
	// 自动绑定env
	v.SetEnvPrefix("dbg")
	v.AutomaticEnv()

	v.SetConfigName("config")
	v.SetConfigType("yaml")
	// viper.SetEnvPrefix("")
	v.AddConfigPath(configPath)

	v.ReadInConfig()

	err := v.UnmarshalKey("db", &dbcfg)
	if err != nil {
		log.Fatal(err)
	}
	v.UnmarshalKey("sys", &syscfg)

	// fmt.Printf("sys: %v\n", v.Get("sys.dev"))
	// fmt.Printf("db: %v\n", v.Get("db.username"))

	// if err := v.ReadInConfig(); err != nil {
	// 	panic(err)
	// }

	// if err := viper.ReadConfig(bytes.NewBuffer(source)); err != nil {
	// 	panic(err)
	// }
}
